/**
 * Copyright (C) 2015-2018 IQIYI
 * All rights reserved.
 *
 * Author     : 王海斌
 * E-mail     : wanghaibin@qiyi.com
 * Version    :
 * Date       : Tue 18 Dec 2018 04:48:51 PM CST
 * Destription: 测试基础类型占用空间大小
 *
 */
#include <iostream>
#include <string.h>
#include <limits>
#include <unistd.h>
#include <sys/times.h>
#include <stdint.h>

using namespace std;

typedef enum TEST_ENUM
{
    TE_FIRST = 0, //测试enum
    TE_SEC
}TEST_ENUM;
int main()
{

    cout << "bool: \t\t" << "所占字节数：" << sizeof(bool);
    cout << "\t最大值：" << (numeric_limits<bool>::max)();
    cout << "\t\t最小值：" << (numeric_limits<bool>::min)() << endl;

    cout << "char: \t\t" << "所占字节数：" << sizeof(char);
    cout << "\t最大值：" << (int)(numeric_limits<char>::max)();
    cout << "\t\t最小值：" << (int)(numeric_limits<char>::min)() << endl;

    cout << "signed char: \t" << "所占字节数：" << sizeof(signed char);
    cout << "\t最大值：" << (int)(numeric_limits<signed char>::max)();
    cout << "\t\t最小值：" << (int)(numeric_limits<signed char>::min)() << endl;

    cout << "unsigned char: \t" << "所占字节数：" << sizeof(unsigned char);
    cout << "\t最大值:" << (int)(numeric_limits<unsigned char>::max)();
    cout << "\t\t最小值:" << (int)(numeric_limits<unsigned char>::min)() << endl;

    cout << "wchar_t: \t" << "所占字节数：" << sizeof(wchar_t);
    cout << "\t最大值：" << (numeric_limits<wchar_t>::max)();
    cout << "\t\t最小值：" << (numeric_limits<wchar_t>::min)() << endl;

    cout << "short: \t\t" << "所占字节数：" << sizeof(short);
    cout << "\t最大值：" << (numeric_limits<short>::max)();
    cout << "\t\t最小值：" << (numeric_limits<short>::min)() << endl;

    cout << "int: \t\t" << "所占字节数：" << sizeof(int);
    cout << "\t最大值：" << (numeric_limits<int>::max)();
    cout << "\t最小值：" << (numeric_limits<int>::min)() << endl;

    cout << "unsigned: \t" << "所占字节数：" << sizeof(unsigned);
    cout << "\t最大值：" << (numeric_limits<unsigned>::max)();
    cout << "\t最小值：" << (numeric_limits<unsigned>::min)() << endl;

    cout << "unsigned short int: \t\t" << "所占字节数：" << sizeof(unsigned short int);
    cout << "\t最大值：" << (numeric_limits<unsigned short int>::max)();
    cout << "\t最小值：" << (numeric_limits<unsigned short int>::min)() << endl;

    cout << "uint8_t : \t\t" << "所占字节数：" << sizeof(uint8_t);
    cout << "\t最大值：" << (numeric_limits<uint8_t>::max)();
    cout << "\t最小值：" << (numeric_limits<uint8_t>::min)() << endl;

    cout << "uint16_t : \t\t" << "所占字节数：" << sizeof(uint16_t);
    cout << "\t最大值：" << (numeric_limits<uint16_t>::max)();
    cout << "\t最小值：" << (numeric_limits<uint16_t>::min)() << endl;

    cout << "long long: \t\t" << "所占字节数：" << sizeof(long long);
    cout << "\t最大值：" << (numeric_limits<long long>::max)();
    cout << "\t最小值：" << (numeric_limits<long long>::min)() << endl;

    cout << "long: \t\t" << "所占字节数：" << sizeof(long);
    cout << "\t最大值：" << (numeric_limits<long>::max)();
    cout << "\t最小值：" << (numeric_limits<long>::min)() << endl;

    cout << "unsigned long: \t" << "所占字节数：" << sizeof(unsigned long);
    cout << "\t最大值：" << (numeric_limits<unsigned long>::max)();
    cout << "\t最小值：" << (numeric_limits<unsigned long>::min)() << endl;

    cout << "double: \t" << "所占字节数：" << sizeof(double);
    cout << "\t最大值：" << (numeric_limits<double>::max)();
    cout << "\t最小值：" << (numeric_limits<double>::min)() << endl;

    cout << "long double: \t" << "所占字节数：" << sizeof(long double);
    cout << "\t最大值：" << (numeric_limits<long double>::max)();
    cout << "\t最小值：" << (numeric_limits<long double>::min)() << endl;

    cout << "float: \t\t" << "所占字节数：" << sizeof(float);
    cout << "\t最大值：" << (numeric_limits<float>::max)();
    cout << "\t最小值：" << (numeric_limits<float>::min)() << endl;

    cout << "size_t: \t" << "所占字节数：" << sizeof(size_t);
    cout << "\t最大值：" << (numeric_limits<size_t>::max)();
    cout << "\t最小值：" << (numeric_limits<size_t>::min)() << endl;
    size_t is = -1*100;
    cout << "\t whb test -1 of size_t = " << is << endl;

    cout << "ssize_t: \t" << "所占字节数：" << sizeof(ssize_t);
    cout << "\t最大值：" << (numeric_limits<ssize_t>::max)();
    cout << "\t最小值：" << (numeric_limits<ssize_t>::min)() << endl;

    cout << "string: \t" << "所占字节数：" << sizeof(string) << endl;
    cout << "time_t: \t" << "所占字节数：" << sizeof(time_t) << endl;


    cout << "enum size=" << sizeof(TEST_ENUM) << endl;
    return 0;
}
